When devices on a network communicate with each other, they communicate by sending packets of data back and forth. Each packet typically follows a communication path in which there are a series of intermediate network nodes. In a network made up of smaller networks, such as the Internet, packets of data are received by routers and forwarded to the next network node on its way to its ultimate destination. A router is connected to two or more networks, and, for each packet, makes decisions as to the next hop in the path of the packet. A router typically has information about available paths, and uses a routing algorithm to decide the next network node for each packet. Often, there are a number of available paths that packets can take between a source and a destination.
A communication includes all packets exchanged between network nodes during a transaction. This includes protocol handshakes that are specified by a particular protocol, such as TCP/IP, and SSL/TLS. A transaction may be a request of data from a client to a server, together with the response by the server. A request for a web page and the transmission of the web page is one type of communication. A request to download a file and the transfer of the file is another type of communication. A communication or part of a communication may also be referred to as a flow or as a flow of packets.
Some protocols, such as TCP/IP, perform best if the network path of a communication does not change during the communication. If a path changes, the protocol may be broken, and the communication may be terminated prematurely. A change in path causes disruption on a flow. Disruption may refer to a measurement of the number of flows that have their paths changed. One way to measure disruption is as a percentage of total flows that are disrupted. Using this metric, disruption at a network device such as a router is the percentage of flows through the device that have their paths changed. Disruption is discussed in Request for Comments 2291 and Request for Comments 2292, available at http://www.ietf.org/rfc/rfc2991.txt, and http://www.ietf.org/rfc/rfc2992.txt, respectfully.
A special case of changing a network path occurs when a client communicates with a server, and the communication is redirected to a different server. For example, a web site may use a number of servers to provide information and perform transactions. A client may begin a transaction with a particular server, which stores information relating to the client or the transaction. The communication may then be redirected by an intermediate device, such as a traffic manager, to a different server. The second server may not be able to complete the transaction, because it is lacking important data. For example, when a user is shopping for items on a WWW server and filling a “shopping cart,” a traffic management device that sends some packets from the user to one WWW server and other packets from the user to another WWW server may cause shopping cart information to be lost. A change in servers such as this is also referred to as disruption. It is to be noted that a transaction that is disrupted because application data is not accessible is different than a broken TCP/IP protocol. However, both situations are referred to as disruption, in this application.
What is needed is a way of manipulating a mapping between source objects, such as packets, and targets, so that when the targets change, the mapping can be modified, without an excessive amount of disruption.